=*+=======----==---------=---======+#%%%@@@%@%@@@@%%%%@%%%###%%%%%%%%
=*+=-------------------------====*#%%%%%@@@%@@@@@%%%%%%###*******+++*
+*+=====-------==---=---======+*%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%
=====================++++++**###%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%
=========+++++++++++++**###############%@%%%##%%%%%%%%%%%%%%%%%%%%%%%
++++++++++**++*##**************#######%%%###**++*#%%%%%%%%%%%%%%%%%%%
*+++****##************#**##*****#####%%%%%%%##**++%%%%%%%%%%%%%%%%%%%
*+***#######******#**************####%%%%%%%%%%#*#%%%%%%%%%%%%%%%%%%%
*+*++++**++*****#**********+==+**##*#%%%%%##*#%%%%%%%%%%%%%%%%%%%%%%%
*+*************************++****######*#***+*%%%%%%%%%%%%%%%%%%%%%%%
**********####################*##*#*#*###**+****#%%%%%%%%%%%%%%%%%%%%
##################################%%######%####*++#############%%%%%%
%#%%%%%%%%%%%%%%%####%%##%%######%###########*+#*++##%###############
########%%%%%%%%#####%%%%%%%%##%%%%%%%%%##%##*#%##+#%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%#%%####+%%%%%*#%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%####%*#*####%%+###%%%%%%%%%####%
%%%%%%%%%%%%###############%%%#####**##%%#*#*####%**################%
%%%%%%%%########**#########%%%%######%##%%##%*##%#*################%%
###%%%##########*####*###%%%%%%%%%%#%##***%##%*%%#+####%%%%%%##%%%%%%
%%%%%%##############*##%%%%%%%%%@@@@@%###**%%%%#%%%#######%%%%%%%%%%%
%%%%%%%%###############%%%%%%%@@%%%%%%@%#**#%%%#*%%%%%%%%####%%%%%%%%
%%%%%%%#############*##%%%%%%@@%%%%%%%%@%**%%%#*###%%%%%%%%%######%%%
@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%###%%%%%%%@@@@%%%%%%%%%